- web6047 - (2021/09/10(金) 現在、システム調整中のため、一部の表示がおかしいかもしれません)

homepage6047 2019年 8月

プログラミングやRPG(作るほう)が好きな人の日記



このホームページは毎日 夜11時にアクセスできなくなります。

朝6時半に再開されます。(世の中のネット依存対策として)


2019/8/27(火)

サウンドトラックを購入することができた☆彡

以下2点のサウンドトラックを購入することができました。ほんとに良かった。

どちらも中古ショップではプレミア価格が付いていて高額で買えないな…と思っていましたが、正規販売のほうで名作CDコーナーと題して、普通の価格で再販してくれています。

セガストア、「DAYTONA USA」など名作ゲームのサントラCDをピックアップしたコーナー「セガ名作サントラCD」をオープン!

また こりずに仕事しすぎて疲れていたけど、なんだか元気が出てきちゃった☆彡


(訪問者のどんなニーズと この記事がつながるか)


2019/8/25(日)

お盆休み中1 - 毎日浜辺へ出かけました -[dekake]

2019/8/9 (金) 9:34 晴れ
2019/8/10 (土) 12:24 晴れ
2019/8/11 (日) 10:47 曇り
2019/8/12 (月) 11:00 快晴
2019/8/13 (火) 9:02 快晴
2019/8/14 (水) 11:51 曇り
2019/8/15 (木) 11:50 快晴
2019/8/16 (金) 11:14 曇り
2019/8/17 (土) 13:27 晴れ
2019/8/18 (日) 11:11 晴れ

お盆休み中は、毎日浜辺へ出かけて、様子を写真に収めました。

8/15 だけガンプラになっていますが、「たまにはいいかな」と思って、近所のおもちゃ屋さんへ行って購入してきました。ほんとは、8/10 に発売された「RG νガンダム」がほしかったんですが、人気があるらしく完売していて、代わりに「局地型ガンダム」というのを買いました。


お盆休み中2 - お供え物 -[season]

fig.
▲お供え物。
さつまいも、ほおずき、にんじん、たまねぎ、なす、ピーマン、とうもろこし

お盆を前にして、精霊馬(しょうりょう うま)が頭にあって用意しようと思っていました。

ナスやキュウリに、棒を4つ、足のように突き刺して動物のようにした人形です。

「めぞん一刻」というマンガの扉絵だったかで描かれていたのを見たことがあります。

  
作図:私

お盆には亡くなったご先祖さんたちが家にやってくるんですが、そのときの乗り物として「馬」や「牛」を用意してあげる、という意味だそうです。

近所のスーパーで「お供え物」として500円くらいでセットが売っていたので買ってきました。

足は付けなかったんですが、母が言うには お盆のお供え物は「亡くなった親せきが喜ぶ」のだそうです。

左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲ほおずき

しかし、いつまでも飾っていると傷んでしまうので3~4日たったころに捨てることにしました。でも そのまえに、ほおずきだけ…。

パカッと開けると、中に丸い実が。ひさしぶりだなぁ。

左の画像リンクをクリックすると 画像を拡大 します。



(訪問者のどんなニーズと この記事がつながるか)


信号電圧 12V をかけた IchigoCake その後 -[den]

7/13(土)に秋葉原へ出かけて買ってきた、子供向けのプログラミング教育用 基板「IchigoCake」。

私が購入したのは「組み立てキット」というタイプで、自分でマイコンにシステムを書き込むという作業が必要、というものでした。

ところが、書き込むための「USB-シリアル変換」というパーツを買い忘れていました。

そこで自室に置いてあった「USB-シリアル変換ケーブル」というケーブルを使って書き込もうとしましたが、同じシリアルでも RS-232c というタイプのシリアル通信だったため、信号電圧 5V までの「IchigoCake」基板に 12V の信号を流してしまったのでした。記事

その後…。



壊れたのかどうか

fig.
▲超小型USBシリアル変換モジュール

秋月通販にアクセスして購入した「超小型USBシリアル変換モジュール」。届きました。

左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲「IchigoCake BASIC」の書き込み

これを使って書き込むマイコンは、「IchigoCake BASIC」と「PanCake」の2つです。

左の写真は「IchigoCake BASIC」の書き込み。

ちゃんと書き込みできました。

左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲「PanCake」の書き込み

左の写真は「PanCake」の書き込み。

こちらもちゃんと書き込みできました。

左の画像リンクをクリックすると 画像を拡大 します。


書き込みはできましたが、12V のダメージを受けているので起動するかは まだわかりません。



起動するのか??

fig.
▲「IchigoCake BASIC」の画面

起動しました。あっさり。

映像出力は2つあって、左の写真は「プログラミング画面」です。

たぶん2つのマイコンのうち「IchigoCake BASIC」のほうの画面がこれです。

左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲「PanCake」の画面(モノクロ)

左の写真は「実行画面」、2つのマイコンのうち「PanCake」のほうの画面です。

でも画面全体が灰色(モノクロ)です。

左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲C11という部品のつまみを回します。

説明書に

「C11: PanCakeの映像調整に使います。起動時に画面がカラーにならない場合、内部を精密ドライバーなどで回して調整してください」

と書いてあります。

左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲「PanCake」の画面(カラー)

それで回してみると、カラーになりました。めでたし。

左の画像リンクをクリックすると 画像を拡大 します。



プログラムを打ち込んで…

fig.
▲「IchigoCake BASIC」にキーボードから打ち込み

プログラムを打ち込んでみました。

1 '20190717TEST
10 PC.RESET:WAIT5
20 PC.CLEAR 0
100 FOR I=0 TO 99
110 X=RND(80)
120 Y=RND(45)
130 R=RND(100)
135 C=RND(15)
140 PC.LINE X,Y,X,Y,C
150 NEXT
160 X=79:Y=44
170 PC.LINE X,0,X,100,1
180 PC.LINE 0,Y,79,Y,1
190 FOR X=0 TO 79
200 SCROLL 1
210 NEXT
300 END

左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲ピンボケ写真

RUN すると打ち込んだプログラムのとおりに「PanCake」のほうで動きます。

2つのマイコンは2つとも LPC1114FHN33/333(ARM Cortex-M0搭載、50MHz)という高性能マイコンです。(データシート 英語 PDF

ですが、言語が BASIC なので、動きは多少もたつくようです。アセンブラで動かせば速いはずです。

左の画像リンクをクリックすると 画像を拡大 します。



それから、スプライト機能の描画の様子を見てみました。

▼スプライトの動き

横8 x 縦4 = 32個 のスプライトを一斉に動かすと、少し遅延はあるけど、ちょっと遊ぶには問題なさそう。

遅延があるところはソフトウェアっぽい動きですね。

遅延はたぶん BASIC だからで、アセンブラ(機械語)でプログラムすればもっと速いかもしれません。

▼スプライトの書き換え

こちらも、横8 x 縦4 = 32個 のスプライトで、今度はパターンの書き換えを行ってみました。

32個のスプライトは、同じパターンを参照していて、そのパターン1つを書き換えると、ほぼ同時にすべてのスプライトが変化しています。

遅延がないというのはハードウェアっぽい動きですね。

1 'SPRITE TEST
200 PC.RESET:WAIT5
210 PC.WBUF 1
220 PC.SSTART 1
225 FOR I=0 TO 31
230 PC.SCREATE I,I
300 NEXT
305 A=0:B=1
310 FOR I=0 TO 31
320 PC.SMOVE I,I%8*8+A,(I-I%8)
330 NEXT
340 A=A+B
350 IF A=3 B=-1
360 IF A=-3 B=1
370 GOTO 310
50 'スプライト カキカエ テスト
100 'モジレツ メモリ カクホ
110 A="11111111111111111111111111111111
11111111111111111111111111111111"
120 '
130 'ショキカ
140 FOR I=0 TO 63
150 POKE A+I,ASC("2")
160 NEXT
170 '
180 PC.SSTART #10
190 '
200 'スプライト サクセイ
210 FOR I=0 TO 31
220 PC.SCREATE I,#F0
230 NEXT
240 '
250 'アニメ
260 FOR I=0 TO 63
270 POKE A+I,ASC("1")
280 PC.SUSER #F0,2,A
290 NEXT
300 GOTO 110


ちょっと驚いたのは、「メモリを書き換える」という命令を使って、ある文字列変数の内容を書き換えたとき、「プログラムリスト」の代入部分(文字列)が書き換わったことでした。

たしかにそこを書き換えればメモリの節約になる気がしますけど、びっくりしました。

でもこれって、プログラムをソフトウェアとして動かすときの発想ではなくて、プログラムを機械の一部として動かすときの発想に似ているなと思いました。IchigoJam や IchigoCake を作った人はそういう感覚を持っている人なのかもしれません。


私も小さい頃は、↓こういう画面で遊んでいたので、最近の子供たちも同じように遊べるだろうなと思いました。


ついでに、小さいモニタでドラクエを…

fig.
▲ドラクエで遊んだ。

秋月電子通商で購入した小さいモニタは「IchigoCake」専用ではなく、普通のビデオ入力のモニタなので、ファミコンの画面も映せるでしょう。

そこで、ファミコン互換機を小さいモニタにつなげて、ドラクエで遊んでみました。

モニタの背面のボタンで色調整や画面縦横比率変更などを行いました。

ビデオ入力らしい多少にじみのある映像です。

音声入力はないので別途スピーカーから音を出す必要があります。

秋月電子通商「TFT LCD MONITOR」 ¥2700


左の画像リンクをクリックすると 画像を拡大 します。




(訪問者のどんなニーズと この記事がつながるか)


2019/8/7(水)

NO PC WEEK -[no_pc]

最近不健康なので、 8/7(水)~ お盆休み最終日 8/18(日)まで、NO PC WEEK にします。

そのあいだホームページの更新は行われませんのでお知らせしておきます。

前回 NO PC WEEK を行ったときは、だいぶ良くて自分で絶賛していました。

パソコンをやらないというだけで、身体の状態が良くなり、気持ちも晴れやかになります。


応用情報の資格試験受験の申込みをしました。

お盆休み中は SQL とアセンブラに まとをしぼって取り組みたいと思います。

合格したいという気持ちはゼロではありませんが、合格よりも、SQL の問題を自信をもって解けるようになりたいという気持ちがあります。

応用情報は3度くらい受験していますが、毎回 SQL は自信がないんです。

アセンブラは応用情報の勉強にはあまり効果がない気がしますが、アセンブラは前のゴールデンウィークに勉強したものの いまいち身についている気がしないので復習でもう一度 本を最初から読み進めたいと思っています。

応用情報の資格を取っても、その方向の就職をするつもりはなく、単に自己啓発を目的にして取り組もうと思っています。

私の身体はけっこうボロボロになっている気がしますが(仕事のしすぎで。)、身体がボロボロだから向上心がなくなるとか何かをあきらめるとかそういうことにはならないみたいです。(今よりもっとボロボロになったらあきらめるんですかね?)


みなさんも、お盆休みに暇ならば、前から取り組もうと思っていたものを根詰めて勉強してみるとか、絵の苦手なところの練習とかでもいいと思うんですが、何かしらやってみてはどうでしょう。


(訪問者のどんなニーズと この記事がつながるか)


2019/8/4(日)

今月の扉絵 -[modeling]

Shade3D で作成しました。

このような CG を作る過程をちょっと見てみましょう。

ステップは 1 ~ 12 まであります。


fig.
▲簡単な形状で、人間を作る

1. 直方体などで人体を かたちづくり…


左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲ボーンを配置する

2. そこへボーンと言われる骨組みを、だいたいこの辺かなというあいまいさで良いので、人の体の関節に合わせて配置します。


左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲体のパーツ → ボーン の関連付け
3. 人の体のパーツと、配置したボーンを関連付けします。
  1. ボーンを関連付けしたい人の体のパーツ(形状)を選択し、 (左図 赤枠
  2. 「スキン」ウィンドウを開いて、 (左図 緑枠
  3. 対応させたいボーンを選びます。 (左図 青枠

この作業をボーン(関節)の数だけ行います。


左の画像リンクをクリックすると 画像を拡大 します。


fig.
▲コイツ…指の関節レベルで動くぞ!

4. すると、ガンダムのプラモデルみたいに自在にポーズを付けることができるようになります。


左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲スライダで動かせる

5. ポーズの付け方は、

  1. 動かしたい部分のボーンを選択し、 (左図 赤枠
  2. スライダを動かします。 (左図 緑枠
  3. すると、スライダに合わせてリアルタイムに動きます。 (左図 青枠


左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲ShadeExplorerでプリセット素材を選ぶ

6. つづいて、フォトリアルにするために、

背景として プリセットの風景画像を適当に選びます。すると、


左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲背景素材を選んだので、背景に入る

7. ここにセットされます。


左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲ただのレイトレーシングの結果

8. そのままレンダリングすると、ただのレイトレーシングの質感になりますが…


左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲レンダリングの設定

9. レンダリングの設定で「大域照明」を「なし」から「パストレーシング」に切り替えると…


左の画像リンクをクリックすると 画像を拡大 します。




fig.
▲いちおうフォトリアル

10. フォトリアルな質感になります。

ただし、赤枠部分に、余計な光源が設定されていて、この結果は本来よりも明るすぎになっています。


左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲たいてい暗くなってしまう

11. 赤枠部分を 0 に設定すると、

暗くなってしまいますが…


左の画像リンクをクリックすると 画像を拡大 します。



fig.
▲3倍の明るさにした

12. セットした背景について、「光源としての明るさ」という設定を 1.00 から今回は 3.00 にしました。

すると明るさを数値に合わせて増幅してくれるので、明るくなります。

これで、背景画像だけを光源としたフォトリアルなレンダリングとなりました。


左の画像リンクをクリックすると 画像を拡大 します。



▼ただのレイトレーシング

こちらは、背景の様子は考慮されていませんが…
▼大域照明 (フォトリアル)

こちらは、床の白さ(背景)の照り返しが体に当たっている様子などが描かれています。


(訪問者のどんなニーズと この記事がつながるか)


RPG の試作3 -[rpg]

35年前にファミコンのドラゴンクエスト1でショックを受けて以来、ずっと RPG の自作に取り組んでいます。

35年前にポケコンの小さな画面で 1 作完成し、その後35年のあいだ、RPG の歴史を調べたり、すべての RPG の始祖の RPG を購入して研究したり、ゲームが社会に与える影響を考慮したり、この RPG はなぜおもしろいのか、なぜつまらないのか答えを探る等、いろいろ研究してきました。

そのあいだ、何も完成できないでいましたが、最近になって 2 作目に近づいてきました。


RPG では 現実には出来ないことが疑似体験できる

fig.
▲RPGでは魔法が使える

RPG の良さはいろいろあると思いますがその中に「現実でできないことの疑似体験ができる」というのがあると思います。魔法を使う、神話のモンスターと対峙する、姫を助け出す、知らない土地を歩く、などなど。

使ったことのない魔法を、自分で選んで発動し、その結果を見ることができるんです。

昨今のいろいろな RPG をやりすぎて、そういった初心を忘れていませんか?

左の画像リンクをクリックすると 画像を拡大 します。

(画像は Shade3D で作成、炎は無料素材から)



fig.
▲メニューのカーソルに合わせて…

そこで今回の RPG の試作品です。

魔法を使う喜びを、と思ってそれを具現しようと試みました。

魔法はマップ上の一番左下に置いてあります。

魔法を使う意味のために、HP(体力)の概念を導入しました。敵キャラは HP が0になると撃破となります。自分の HP 表示は表示してるだけで自分が撃破されることはありません。

キーボード操作が必要です。

操作方法:

キー: 移動

EnterまたはSPACEキー: メッセージを送ったり、選択を決定。

左の画像リンクをクリックすると JavaScript を実行 します。



RPG の社会に対する影響と対策

昨今の RPG では、魔法のグラフィカルなエフェクトが豪華です。

でも、敵キャラを刃で切りつけたり、敵キャラを炎で燃やす映像は、社会に対する影響としてよくないです。

ゲーム中の現実に近い描写を繰り返し見て体験することによって感覚として慣れてしまい、誰かを憎んだときの仕返しの手段として発想しやすくなってしまうでしょう。

ゲームは、悪いことをするための事前の訓練、そのためのリアルなシミュレーターに なってはいけないはずです。


その対策として、刃を振り上げるところまではふつうに描き、振り下げて切りつけるところで、その刃が透明になり、切りつけ終わると刃がまた現れる というのを、私は将来やろうと思っています。


1. 刃を振り上げるところまではふつう
2. 振り下げて切りつけるところで その刃が透明になり 3. 切りつけ終わると刃がまた現れる


そうすることで、感覚として慣れることはないだろうし、「相手を切りつけるのはいけないことである」というのを教えることもできると思います。

そのため、今回の試作品では、魔法で敵を炎で燃やす描写を避けました


その代わり、メニューで「たたかう」にカーソルを合わせると武器を構え、「まほう」にカーソルを合わせると手のひらから "エネルギー体" が出ているところを表示するようにしました。

こうすることで、何をやろうとしているのかがよくわかるので、魔法を使う喜び、疑似体験につながるのではと思います。


今回の試作を通して、現実でできないことをゲームで実現できる、というのは、社会問題と隣り合わせなんだなと思いました。

(最近流行りの VR ゴーグルによる仮想世界体験はコンテンツの取捨選択が必要だと思います)

 

動作確認


お手元で実行できるファイル一式ダウンロード

プログラムは 前回に増して あまりきれいじゃありませんが…ダウンロードだけできるようにしておきます。

公開日 ファイル名 サイズ
2019/8/4 20190804-RPG test.zip 444KB

RPG 試作プログラム(JavaScript)の一式をまとめた ZIP ファイルです。
  • まほうを使えるようにした。
  • 同じ敵キャラが何度も出現するとストレスを感じるので対策を行った。(同キャラ2回まで)
  • 短時間のあいだに戦いが何度も繰り返されるとストレスを感じるので対策を行った。(最後の戦闘から5秒)
  • モンスターのセリフをフキダシにした。
ダウンロード


(訪問者のどんなニーズと この記事がつながるか)



webappsrcの確認

1. %%com.webapp.src:/webappsrccheck.html%%
と記述した場合

webapps/src/default.cssのスタイル指定が効く
<!DOCTYPE html><!--ESCAPEPROCESS-->

<head>

<script>

function onloadx() {

//一般関数

console.log( "文字列" );

}

function Class1() {

//クラス

console.log( "文字列" );

}

Class1.prototype.method1 = function() {

//メソッド

console.log( "文字列" );

}

</script>

</head>

<body onload="onloadx();" style="">

Hello world!<BR>

</body>

</html>



2. <code>
%%com.webapp.src:/webappsrccheck.html%%
</code>
と記述した場合

このファイルのcodeのスタイル指定が効く
<!DOCTYPE html><!--ESCAPEPROCESS-->

<head>

<script>

function onloadx() {

//一般関数

console.log( "文字列" );

}

function Class1() {

//クラス

console.log( "文字列" );

}

Class1.prototype.method1 = function() {

//メソッド

console.log( "文字列" );

}

</script>

</head>

<body onload="onloadx();" style="">

Hello world!<BR>

</body>

</html>



3.
%%com.webapp.src:/webappsrccheck2.html,/webappsrccheck.html%%
と記述した場合

webapps/src/default.cssのスタイル指定が効く
<!DOCTYPE html><!--ESCAPEPROCESS-->

<head>

<script>

function onloadx() {

//一般関数 コメント変更

console.log( "文字列変更" );

行追加

}

function Class1() {

//クラス コメント変更

console.log( "文字列変更" );

行追加

}

Class1.prototype.method1 = function() {

//メソッド コメント変更

console.log( "文字列変更" );

行追加

}

</script>

</head>

<body onload="onloadx();文字列変更" style="">

Hello world!<BR>

HTML追加

</body>

</html>



4. <code>
%%com.webapp.src:/webappsrccheck2.html,/webappsrccheck.html%%</code>
と記述した場合

このファイルのcodeのスタイル指定が効く
<!DOCTYPE html><!--ESCAPEPROCESS-->

<head>

<script>

function onloadx() {

//一般関数 コメント変更

console.log( "文字列変更" );

行追加

}

function Class1() {

//クラス コメント変更

console.log( "文字列変更" );

行追加

}

Class1.prototype.method1 = function() {

//メソッド コメント変更

console.log( "文字列変更" );

行追加

}

</script>

</head>

<body onload="onloadx();文字列変更" style="">

Hello world!<BR>

HTML追加

</body>

</html>



5. リンクで
src?webappsrccheck.html
と記述した場合

webapps/src/default.cssのスタイル指定が効く
開く

6. リンクで
src?webappsrccheck2.html,webappsrccheck.html
と記述した場合

webapps/src/default.cssのスタイル指定が効く
開く